﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace NUMP4CS
{

    public partial class CSharpModel
    {
        [XmlIgnore]
        private Dictionary<string, Namespace> namespaces = new Dictionary<string, Namespace>();

        public Namespace getNamespace(String key)
        {
            if (!namespaces.ContainsKey(key))
            {
                namespaces.Add(key, new Namespace()
                {
                    name = key
                });
                this.Items.Add(namespaces[key]);
            }
            return namespaces[key];
        }

    }

    public partial class Namespace
    {
        [XmlIgnore]
        public List<TypeDeclaration> AttributeTypes
        {
            get
            {
                return this.Items2;
            }
            set
            {
                this.Items2 = value;
            }
        }
    }

    public partial class AttributeTypeDeclaration
    {

        [XmlIgnore]
        public List<MemberDeclaration> Properties
        {
            get
            {
                return this.Items2;
            }
            set
            {
                this.Items2 = value;
            }
        }
        [XmlIgnore]
        public List<MemberDeclaration> Constructors
        {
            get
            {
                return this.Items2;
            }
            set
            {
                this.Items2 = value;
            }
        }
    }

    public partial class MemberDeclaration
    {
        [XmlIgnore]
        public List<object> Modifiers
        {
            get
            {
                return this.Items1;
            }
            set
            {
                this.Items1 = value;
            }
        }
        [XmlIgnore]
        public List<object> Attributes
        {
            get
            {
                return this.Items1;
            }
            set
            {
                this.Items1 = value;
            }
        }

    }



    public partial class Attribute
    {
        [XmlIgnore]
        public List<AttributeArgument> NamedAttributeArguments
        {
            get
            {
                return this.items1Field;
            }
            set
            {
                this.items1Field = value;
            }
        }
        [XmlIgnore]
        public List<AttributeArgument> PositionalAttributeArguments
        {
            get
            {
                return this.items1Field;
            }
            set
            {
                this.items1Field = value;
            }
        }
    }

    }
